Дао породило машинный язык.
Машинный язык породил ассемблер.
Ассемблер породил компилятор.
Теперь в мире десять тысяч языков.
(Дао Программирования)


Язык С был разработан в 1972 году Кеном Томпсоном и Деннисом Ричи как язык системного программирования для системы Юникс. Позднее Юникс был переписан на С (с ассемблера), что в значительной мере предопределило распространение Юникса и самого языка. До сих пор на нем пишутся операционные системы (в частности, ядро Линукса написано на С).
Среди целей разработки языка была максимальная простота, ведущая к высокой скорости работы, малым накладным расходам и простоте реализации.

Малость языка и великость библиотеки

Сам язык достаточно мал (список ключевых слов насчитывает 32 слова). Эта особенность обеспечивается тем, что многие возможности вынесены в библиотеки. В том числе такие основные, как ввод/вывод и математические операции.
Нужно отметить, что язык С можно классифицировать как сравнительно низкоуровневый язык общего назначения. Он не содержит ряда популярных средств, имеющихся в других языках, в частности автоматического управления памятью, операций над массивами, объектно-ориентированного программирования. В стандартной библиотеке отсутствует поддержка графики и графического интерфейса пользователя.
С другой стороны, библиотека языка С достаточно велика для создания приложений.
(100%)Врезка - Стандартная библиотека С
Сам язык С – маленький. Многие часто используемые возможности вынесены в библиотеки. Библиотека является частью стандарта языка. Роль стандарта – обеспечить, чтобы ваша программа компилировалась на любом компиляторе, его поддерживающем ("переносимость").
Библиотека разделена на осмысленные части, им соответствуют заголовочные файлы. Файл нужно включить (#include) в программу, чтобы можно было этой частью пользоваться.
Всего в стандартной библиотеке около 20 заголовочных файлов, и неплохо представлять, какая смысловая группа функций где описана - на уровне "мне нужны математические функции, значит, смотрим в math.h". Справка по стандартной библиотеке часто структурирована по заголовочным файлам.
Нам будут нужны не все. Вероятно, потребуются:
  • math.h, упомянутый ранее,
  • stdio.h, функции стандартного ввода-вывода,
  • stdlib.h, ряд часто используемых функций, в т.ч. датчик случайных чисел.
  • string.h, функции работы со строками
  • conio.h, библиотека консольного ввода-вывода (в основном для реализации функциональности "нажмите любую клавишу для продолжения").
Эта библиотека не входит в стандарт, но в консольных приложениях Windows часто используется.

Язык портирован на очень многие системы и служит средством переноса прикладных программ, в свою очередь написанных на С.
В связи с этим большое значение приобретает стандартизация.
Первым неформальным стандартом языка была изданная в 1978 году книга "Язык программирования С" (Брайан Керниган, Деннис Ричи). Книга получилась хорошая и еще больше добавила языку популярности. В 1989 году был принят ANSI стандарт языка. С тех пор был принят еще один стандарт, текущий стандарт носит название С99.